﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Linq;
using System.Data.SqlClient;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Transactions;
using BS_Gimnasio.General;
using DS_Gimnasio;
using System.IO.Ports;

namespace BS_Gimnasio.Publicidad
{
    [DataContract()]
    public class cls_Mensajeria_Sms : cls_Base
    {

        #region Variables

        private int _idSms;
        private DateTime _fecha;
        private string _mensaje;
        private int _destinatarios;
        private int _idUsuario;
        private string _nombreRutina;


        #endregion


        #region Propiedades


        [DataMember()]
        public int idSms
        {
            get { return _idSms; }
            set { _idSms = value; }
        }

        [DataMember()]
        public DateTime fecha
        {
            get { return _fecha; }
            set { _fecha = value; }
        }

        [DataMember()]
        public string mensaje
        {
            get { return _mensaje; }
            set { _mensaje = value; }
        }

        [DataMember()]
        public int destinatarios
        {
            get { return _destinatarios; }
            set { _destinatarios = value; }
        }

        [DataMember()]
        public int idUsuario
        {
            get { return _idUsuario; }
            set { _idUsuario = value; }
        }

        [DataMember()]

        public string nombreRutina
        {
            get { return _nombreRutina; }
            set { _nombreRutina = value; }
        
        }


        #endregion

        #region Metodos Heredados
        public override bool EliminarRegistro(ref string mensajeError)
        {
            throw new NotImplementedException();
        }


        public override DataTable Listar(int opcion)
        {
            try
            {
                DataTable dt = new DataTable();

                using (dtacls_GimnasioDataContext db = new dtacls_GimnasioDataContext())
                {
                    if (opcion == 1)
                    {
                        ISingleResult<SP_Busqueda_RutinasResult> Resultado = db.SP_Busqueda_Rutinas();
                        dt = cls_Adaptador.ToDataTable(Resultado.ToList());
 
                    }
                    if (opcion == 2)
                    {
                        ISingleResult<SP_Numeros_Por_RutinaResult> Resultado = db.SP_Numeros_Por_Rutina(_nombreRutina);
                        //ISingleResult<SP_Busqueda_RutinasResult> Resultado = db.SP_Busqueda_Rutinas();
                        dt = cls_Adaptador.ToDataTable(Resultado.ToList());

                    }

                }

                return dt;
            }
            catch (SqlException ex)
            {
                NumeroError = ex.ErrorCode;
                MensajeError = ex.Message;

                return null;
            }

            catch (Exception e)
            {
                MensajeError = e.Message;

                return null;
            }
        }

        public override cls_Base TraerObjeto()
        {
            throw new NotImplementedException();
        }

        public override void InsertarActualizarRegistro(bool tipoOperacion, ref string mensajeError)
        {
            if (tipoOperacion)
            {
                InsertarRegistro(ref mensajeError);
            }

            else
            {
                //
            }
        }

        private void InsertarRegistro(ref string mensajeError)
        {
            try
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    using (dtacls_GimnasioDataContext db = new dtacls_GimnasioDataContext())
                    {
                        db.SP_Insertar_SMS(fecha, mensaje, destinatarios.ToString(), idUsuario);

                        transaction.Complete();
                    }
                }
            }

            catch (SqlException ex)
            {
                NumeroError = ex.ErrorCode;
                MensajeError = ex.Message;
            }

            catch (Exception e)
            {
                MensajeError = e.Message;
            }
        }

        public override void OtrosProcesos(int opcion, ref object resultado)
        {
            switch (opcion)
            {
                    // Envio de SMS a una sola persona
                case 1:
                    this.EnvioSMS();
                    break;
                    // Envio de SMS de forma Masiva
                case 2:

                default:
                    break;

            }
        }



        #endregion

        #region MetodosPropios
        // Metodo para enviar SMS individual
        public void EnvioSMS()
        {
            cls_EnviarSMS _envio_Sms = new cls_EnviarSMS();
            _envio_Sms.Numero = _destinatarios.ToString();
            _envio_Sms.Numero = _mensaje;

            _envio_Sms.EnviarSMS();



        }
        



        #endregion

 
    }
}
